import os
from dotenv import load_dotenv
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain_community.llms import Tongyi

# 加载环境变量
load_dotenv()

def main():
    # 确保设置了通义千问 API密钥
    if not os.getenv("DASHSCOPE_API_KEY"):
        print("请设置DASHSCOPE_API_KEY环境变量或在.env文件中配置")
        return
    
    # 初始化语言模型
    llm = Tongyi(
        temperature=0,  # 设置为0以获得更确定性的回答
        model_name="qwen-turbo"
    )
    
    # 加载工具
    # llm-math: 用于数学计算
    # serpapi: 用于网络搜索（需要SERPAPI_API_KEY）
    tools = load_tools(["llm-math"], llm=llm)
    
    # 初始化代理
    agent = initialize_agent(
        tools, 
        llm, 
        agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
        verbose=True,  # 显示代理的思考过程
        handle_parsing_errors=True
    )
    
    # 开始交互
    print("\n欢迎使用LangChain代理示例! 输入'退出'结束对话。\n")
    print("这个代理可以帮助您解决数学问题。\n")
    
    while True:
        user_input = input("\n问题: ")
        if user_input.lower() in ["退出", "exit", "quit"]:
            print("\n谢谢使用，再见!")
            break
        
        try:
            # 获取代理回复
            response = agent.invoke({"input": user_input})
            print(f"\n回答: {response['output']}")
        except Exception as e:
            print(f"\n处理您的请求时出现错误: {str(e)}")

if __name__ == "__main__":
    main()